
import preferences from '@ohos.data.preferences';
import dataPreference from '@ohos.data.preferences'
import hilog from '@ohos.hilog';

class PreferenceUtil{
  // 定义实例变量
  private pre: dataPreference.Preferences;

  async loadPreference(context){
    try{
      this.pre = await dataPreference.getPreferences(context, 'myStore');
      hilog.debug(0x0000, 'myStore', '%{public}s', '首选项myStore实例创建成功');
    }catch (err){
      hilog.debug(0x0000, 'myStore', '%{public}s', '首选项myStore实例创建失败' + JSON.stringify(err));
    }
  }

  async putPreferenceVal(key: string, value: preferences.ValueType){
    if(!this.pre){
      hilog.debug(0x0000, 'myStore', '%{public}s', '首选项myStore实例未创建');
      return
    };
    //写入数据
    try{
      await this.pre.put(key, value);
      //持久化
      await this.pre.flush();
      hilog.debug(0x0000, 'myStore', '%{public}s', `mystore实例[${key}]写入成功`);
    }catch (err){
      hilog.debug(0x0000, 'myStore', '%{public}s', `mystore实例[${key}]写入失败--${JSON.stringify(err)}`);
    }
  }

  async getPreferenceVal(key: string, defaultVal: preferences.ValueType){
    if(!this.pre){
      hilog.debug(0x0000, 'myStore', '%{public}s', '首选项myStore实例未创建');
      return
    };
    //写入数据
    try{
      let val = await this.pre.get(key, defaultVal);
      hilog.debug(0x0000, 'myStore', '%{public}s', `mystore实例[${key}]获取成功`);
      return val;
    }catch (err){
      hilog.debug(0x0000, 'myStore', '%{public}s', `mystore实例[${key}]获取失败--${JSON.stringify(err)}`);
    }
  }
}

export default new PreferenceUtil();